The present invention relates to a method and component for deployment of incremental versions of applications. The method relates in particular to transferring Java class files across a network with greatly reduced data transfer.
Distributing only updates or patches for applications is common practice within the software industry. The benefits of only transmitting application files that have been updated, rather than an entire new version of an application are clear.
Prior art products available in this area include DRP from Marimba Inc. and WebDAV from Microsoft Corporation. These products, however, concentrate on changes at the file level, i.e. the products check a previous version of an application against the current version and if a file has changed, it needs to be transmitted, if not then transmission is not required. It is then common, to further reduce the amount of information transmitted, for groups of changed files to be bundled together and compressed into for example a ZIP file or self-extracting executable file before distribution. Class files for Internet applications can be bundled into Java Jar or Microsoft Cab (Cabinet) files for decompression before execution at a client computer.
Client computers running Java applications downloaded from web servers across the Internet, typically keep Java applet classes in a local cache. It is sometimes necessary to update the cache to ensure the client is operating with the most recent version of the classes. Class files, by comparison to conventional application files, for example for a Word Processor or Spreadsheet, are relatively small and even minor updates to Java applications could effect most of the classes. Thus, file based products such as the ones mentioned above provide little performance benefit to the user by only downloading changed files.
The present invention allows software version migration updates to be downloaded to a client computer with a greatly reduced amount of data transfer from the code server to the client.
Accordingly, the present invention provides a method for updating a first version of installed application files to a second version, said method comprising the steps of: responsive to receiving a delta file defining the changes between a file in said first version and a corresponding file in said second version, transforming said first version of said file into a first transformed image comprising a series of records; applying the changes contained in said delta file to selected records of said first transformed image to generate a transformed image of said second version; and reversing the transformation on the transformed image of said second version to generate said second version of said file on said client computer.
The invention further provides a software component as claimed in claim 6.
Whereas prior art techniques chunked updates at a whole class level when most version to version migrations involve a small percentage of change in the code base, the method according to the invention makes optimum use of already installed application objects on the client computer thus greatly reducing the amount of data necessary to download or transfer.
The downloaded data is the minimum necessary delta file between the two class versions down to, for example, the Java Virtual Machine opcode levelxe2x80x94this is likely to be much smaller than previous compression mechanisms and provides a useful improvement in download time/bandwidth use especially with the emergence of non-trivial Internet applications (eg. Component Broker Java Objects, Enterprise Java Beans.)
The present invention also allows the free shipment or download of software updates to customers who already possess licensed versions of the software without requiring licence verification or any special mechanism in the target software by using the previously purchased software as a kind of xe2x80x98keyxe2x80x99 necessary to use the available delta files.